package com.itheima.d1_inner_class1;
/*
    1 内部类
        是类中的五大成分之一（成员变量、方法、构造器、代码块、内部类），如果一个类定义在另一个类的内部，这个类就是内部类。
        场景：当一个类的内部，包含了一个完整的事物，且这个事物没有必要单独设计时，就可以把这个事物设计成内部类。
    2 成员内部类
        就是类中的一个普通成员，类似前面我们学过的普通的成员变量、成员方法。
    3 创建对象的格式：
        外部类名.内部类名 对象名 = new 外部类(...).new 内部类(...);
    4 成员内部类中访问其他成员的特点
        1)、和前面学过的实例方法一样，成员内部类的实例方法中，同样可以直接访问外部类的实例成员、静态成员。
        2)、可以在成员内部类的实例方法中，拿到当前外部类对象，格式是：外部类名.this
 */

//成员内部类： 内部类书写在类中成员位置上
class OuterClass {
    //成员变量
    private String name="黑马";

    //成员内部类
    public class InnerClass {
        private String name="上海黑马";
        //内部类中的成员方法
        public void method() {
            System.out.println("内部类中的成员方法");
            System.out.println(name);//就近访问原则
            System.out.println(OuterClass.this.name);//OuterClass.this外部类对象的引用
        }
    }
}

public class Test {
    public static void main(String[] args) {
        //创建内部类对象
        OuterClass.InnerClass inner = new OuterClass().new InnerClass();
        //使用内部类对象，调用其成员方法
        inner.method();
    }
}
